package main

import "fmt"

type Empty interface{}

type User struct {
	Name     string
	Password string
}

func main() {
	var empty Empty

	empty = 1
	fmt.Printf("%T, %#v\n", empty, empty)
	if i, ok := empty.(int); ok {
		fmt.Println(i + 1)
	}

	empty = "xxx"
	fmt.Printf("%T, %#v\n", empty, empty)

	empty = true
	fmt.Printf("%T, %#v\n", empty, empty)

	empty = User{"x", "y"}
	fmt.Printf("%T, %#v\n", empty, empty)
	if u, ok := empty.(User); ok {
		fmt.Println(u.Name, u.Password)
	}
}
